#pragma once

#include "../core/CRetroInput.h"

enum StateType { STATE_MAINMENU, STATE_GAME, STATE_MOTIONPLUSCALIBRATE, STATE_TOTAL};
class CDirect3D;
class IBaseState
{
public:
	IBaseState(void) {};
	virtual ~IBaseState(void) {};

	virtual void Enter() = 0;
	virtual void Input(CRetroInput* pInput) = 0;
	virtual void Update(float fDeltaTime) = 0;
	virtual void Render(CDirect3D* pRender) = 0;
	virtual void Exit() = 0;
	virtual StateType Type() = 0;

	/*
	bool Enter();
	bool Input(CRetroInput* pInput);
	bool Update(float fDeltaTime);
	bool Render(CDirect3D* pRender);
	bool Exit();
	inline StateType Type() { return StateType::STATE_TOTAL;}
	*/
};

